Лабораторна 4

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
СІ
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
теорія інтелектуальних систем

Частина тексту файла

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ Звіт до лабораторної роботи №4 з дисципліни: «Теорія інтелектуальних систем» на тему: «Дослідження та моделювання марківського процесу прийняття рішень (Markov Decision Process, MDP)» Львів 2017 Мета: Дослідити модель марківського процесу прийняття рішень (Markov Decision Process, MDP). Порядок виконання роботи 1. Реалізувати модель марківського процесу прийняття рішень (Markov Decision Process, MDP) (кількість станів обрати згідно варіанту). 2. Реалізувати модель взаємодії агента з середовищем у вигляді марківського процесу прийняття рішень (кількість доступних агенту дій обрати згідно варіанту). Модель оптимальної поведінки (цільова функція): сумарний виграш з відступаючим горизонтом (receding-horizon model). 3. Реалізувати алгоритм роботи "ідеального" агента (агента, який володіє повною інформацією про характеристики середовища) для випадку марківського процесу прийняття рішень. 4. Реалізувати програму обчислювального експерименту по дослідженню моделі взаємодії агента з стаціонарним випадковим середовищем. 5. Провести обчислювальний експеримент. Отримати усереднені залежності значень цільової функції від часу для 1) випадкового агента та 2) "ідеального" агента. 6. Порівняти отримані залежності та зробити висновки. Варіант N Кількість станів MDP Кількість доступних агенту дій  6 3 4   Текст програми обчислювального експерименту #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #include <tchar.h> #include <math.h> #define ENVTYPE 1 #define NACTIONS 4 #define NSTATES 3 #define NSTEPS 500 #define NREPLICAS 1000 #define REWARD 10//+1 #define PENALTY 0//-1 #define RLTYPE 5 //3 //4 #define RLEPSILON 0.1f #define RLTAU 0.12f } . . . int uRand(int x) { int _rnum = (int)((float)x * (float)rand() / (float)RAND_MAX); return _rnum; } // ---------------------------------------------------------------------------- // discrete probability distribution specified by probabilities from <_array> int dRand(float* _array, int size) { int _rnum = size - 1; float _left = 0; float _right = _array[0]; float ftmp = (float)rand() / (float)RAND_MAX; for (int i = 0; i < size - 1; i++) { if ((ftmp >= _left) && (ftmp < _right)) { _rnum = i; break; } _left = _right; _right += _array[i + 1]; } return _rnum; } // ---------------------------------------------------------------------------- // initialization of stationary environment void seInit(void) { for (int i = 0; i < nA; i++) sePa[i] = (float)rand() / (float)RAND_MAX; //sePa[0] = 0.2f; //sePa[1] = 0.8f; } // ---------------------------------------------------------------------------- // response of stationary environment int seResponse(void) { int _r; float rnum = (float)rand() / (float)RAND_MAX; if (rnum < sePa[action]) _r = REWARD; else _r = PENALTY; return _r; } // ---------------------------------------------------------------------------- // initialization of mdp void mdpInit(void) { int i, j, v; int maxReward = REWARD; float _sum1, _sum2; // probabilities of rewards for (i = 0; i < nS; i++) for (j = 0; j < nA; j++) mdpR[i][j] = uRand(maxReward); // probabilities of state transition for (i = 0; i < nS; i++) for (j = 0; j < nA; j++) { _sum1 = 0; _sum2 = 0; for (v = 0; v < nS; v++) { mdpT[i][j][v] = (float)rand() / (float)RAND_MAX; _sum1 += mdpT[i][j][v]; } for (v = 0; v < nS - 1; v++) { mdpT[i][j][v] = mdpT[i][j][v] / _sum1; _sum2 += mdpT[i][j][v]; } mdpT[i][j][nS - 1] = 1.0f - _sum2; } // initial state mdpState = uRand(nS); } // ---------------------------------------------------------------------------- // response of mdp & state transition int mdpResponse(void) { int _r; // get response in current state _r = mdpR[mdpState][action]; // commutate states mdpState = dRand(mdpT[ceState][action], nS); return _r; } // -------------...
Антиботан аватар за замовчуванням

02.05.2018 21:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини